'use strict';
const xlsx = require('node-xlsx');
const db = uniCloud.database();
const fetch = require('node-fetch');

exports.main = async (event, context) => {
  const { file_id } = event;
  try {
    // 使用 node-fetch 下载文件
    const response = await fetch(file_id);
    if (!response.ok) {
      return { code: -1, msg: `无法下载文件，状态码: ${response.status}` };
    }

    // 获取文件内容（Buffer）
    const buffer = await response.buffer();

    if (!buffer || buffer.length === 0) {
      return { code: -1, msg: '文件内容为空' };
    }

    // 解析 Excel
    const sheets = xlsx.parse(buffer);
    if (!sheets || !sheets[0] || !sheets[0].data) {
      return { code: -1, msg: 'Excel 文件为空或格式错误' };
    }

    const data = sheets[0].data;

    // 校验表头
    const expectedHeaders = ['题目内容', '选项A', '选项B', '选项C', '选项D', '正确答案', '解析', '分类', '难度'];
    const headers = data[0];
    if (!headers || !expectedHeaders.every((h, i) => h === headers[i])) {
      return { code: -1, msg: 'Excel 格式错误，请使用提供的模板' };
    }

    // 解析题目
    const questions = data.slice(1).map(row => ({
      content: row[0] || '',
      options: {
        A: row[1] || '',
        B: row[2] || '',
        C: row[3] || '',
        D: row[4] || ''
      },
      answer: row[5] || '',
      explanation: row[6] || '',
      category: row[7] || '', // 新增分类字段
      difficulty: row[8] || '', // 新增难度字段
      created_at: new Date()
    })).filter(row => row.content && row.answer);

    if (questions.length === 0) {
      return { code: -1, msg: '没有有效题目数据' };
    }

    // 存储到数据库
    const collection = db.collection('questions');
    const res = await collection.add(questions);

    return { 
      code: 0, 
      data: { count: questions.length }, 
      msg: '上传成功' 
    };
  } catch (e) {
    console.error('处理 Excel 失败:', e);
    return { 
      code: -1, 
      msg: `处理 Excel 失败: ${e.message || '未知错误'}`
    };
  }
};